// 引入全局变量定义（如浏览器、Node 环境变量）
import globals from "globals";

// 引入 ESLint 官方推荐的 JavaScript 规则
import pluginJs from "@eslint/js";

// 引入 TypeScript 的 ESLint 支持
import tseslint from "typescript-eslint";

// 引入 Vue 文件的 ESLint 插件
import pluginVue from "eslint-plugin-vue";

// 引入 Prettier 与 ESLint 集成的插件
import prettierRecommended from "eslint-plugin-prettier/recommended";

// 使用 createRequire 兼容性导入 auto-import.json（用于自动引入 API，如 ref、reactive）
import { createRequire } from "module";
const require = createRequire(import.meta.url);
const autoImport = require("./.eslintrc-auto-import.json");

// 导出 ESLint 配置数组
export default [
  // 指定需要校验的文件类型
  { files: ["**/*.{js,mjs,cjs,ts,vue}"] },

  // 设置全局变量环境（浏览器 + Node + 自动导入的 API）
  {
    languageOptions: {
      globals: {
        ...globals.browser,
        ...globals.node,
        ...autoImport.globals,
      },
      parser: tsEslintParser,
      parserOptions: {
        extraFileExtensions: [".vue"], // 确保包含此项
      },
    },
  },

  // 应用 ESLint 推荐的 JS 规则
  pluginJs.configs.recommended,

  // 应用 TypeScript 推荐规则
  ...tseslint.configs.recommended,

  // 应用 Vue 基础规则
  ...pluginVue.configs["flat/essential"],

  // 对 Vue 文件使用 TypeScript 解析器
  {
    files: ["**/*.vue"],
    languageOptions: { parserOptions: { parser: tseslint.parser } },
  },

  // 自定义规则：console 输出仅警告；允许单单词组件名
  {
    rules: {
      "no-console": "warn",
      "vue/multi-word-component-names": "off",
    },
  },

  // 启用 Prettier 格式化，覆盖 ESLint 默认格式化行为
  prettierRecommended,
];
